Skip to content

Added new stomatal model from Buckley et al 2026 - #109

Open
ktrizzo wants to merge 1 commit into
PlantSimulationLab:masterfrom
ktrizzo:stomatalconductance-buckley2026
Open

ktrizzo wants to merge 1 commit into
PlantSimulationLab:masterfrom
ktrizzo:stomatalconductance-buckley2026

Conversation

@ktrizzo

@ktrizzo ktrizzo commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

Adds the stomatal conductance model of Buckley et al. (2026), "A Simple Stomatal Model That Unifies the Metabolic and Hydraulic Control of Carbon and Water Flux", Global Change Biology 32: e70999, https://doi.org/10.1111/gcb.70999.

g_s = β s b (ψ_soil − ψ_c) / (1 + s b D_s / K_plant), with b = J/4 − R_d − A + b_o

Changes

stomatalconductance

  • New Buckley2026coefficients {s, K_plant_at_25C, b_o, psi_c} with the same setters as the other models (all primitives, UUIDs, material label) and a species library (setBuckley2026CoefficientsFromLibrary, getBuckley2026CoefficientsFromLibrary): Almond, Elderberry, Cowpea, EasternRedbud, Grape, Olive, Pistachio.
  • Uses the existing leaf-surface vapor balance (D_s), boundary-layer handling, dynamic mode, and optional outputs (model_parameters, vapor_pressure_deficit).
  • K_plant is the whole-plant (soil-to-leaf) hydraulic conductance. It is read from primitive data plant_hydraulic_conductance when present; otherwise the coefficient is scaled to leaf temperature by the fluidity of water (Buckley et al. 2026, Section 2.2).
  • Selecting the model sets global data buckley2026_stomatal_model_enabled = 1, which makes the photosynthesis and plant hydraulics plug-ins write the inputs below. Missing net_photosynthesis, electron_transport_rate, or dark_respiration is an error; a missing soil_water_potential falls back to −0.1 MPa with a warning.

photosynthesis

  • New optional outputs electron_transport_rate (J) and dark_respiration (R_d) for the Farquhar model, also written automatically when the global data above is set.
  • J and R_d are computed by a new helper, evaluateElectronTransportAndRespiration(), now also used by evaluateCi_Farquhar() (results unchanged).

planthydraulics

  • New outputPlantConductancePrimitiveData(): writes plant_hydraulic_conductance (K_plant = root, stem, and leaf conductances in series, per unit leaf area) and soil_water_potential, also automatically when the global data above is set. soil_water_potential is written only for plants whose value was set with setSoilWaterPotentialOfPlant(), so a value set directly is not replaced.

Species library

Fitted to diurnal LI-600 porometer surveys (corrected per Rizzo & Bailey) with the first measured stem water potential of each day as ψ_soil, and ψ_c from the pressure-volume turgor loss point (fitted for eastern redbud). A, J, and R_d were computed with the Helios Farquhar library entry of each species, so each entry should be used with that entry. Fit statistics are in the documentation table.

Testing

  • New self-tests in all three plug-ins; all existing tests pass (stomatalconductance 53, photosynthesis 65, planthydraulics 24 test cases).
  • The steady state of photosynthesis and stomatal conductance run in alternation reproduces the coupled solution of the code used to fit the library to within 0.001% (g_s) and 0.000% (A).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant